package org.huawei260.String;

/**
 * @Auther: qingle
 * @Date: 2024/10/25-21:32
 * @Description:
 *
 * 给定一段英文文章片段，由若干单词组成，单词间以空格间隔，单词下标从0开始。
 * 请翻转片段中指定区域的单词顺序并返回翻转后的内容。
 * 例如给定的英文文章片段为I am a developer,
 * 翻转区间为[0,3],则输出developer a am I。
 * String reverseWords(String s, int start, int end).
 *
 * @version: 1.0
 */
public class O0091_单词反转2 {


	public static void main(String[] args) {
		String text = "I am a developer"; // 输入的英文文章片段
		int startIndex = 0; // 翻转区间的起始位置
		int endIndex = 3; // 翻转区间的结束位置
		reverseSentence(text, startIndex, endIndex); // 调用方法并打印结果
	}

	private static void reverseSentence(String sentence, int begin, int finish) {
		String[] words = sentence.split(" "); // 将句子分割成单词数组
		if (begin > finish || begin > words.length - 1 || finish < 0) {
			printSentence(sentence); // 无效区间，直接打印原文
			return;
		}

		int left = Math.max(0, begin); // 计算实际的左侧边界
		int right = Math.min(words.length - 1, finish); // 计算实际的右侧边界

		// 翻转指定区间内的单词
		while (left <= right) {
			String temp = words[left];
			words[left] = words[right];
			words[right] = temp;
			left++;
			right--;
		}

		printSentence(words); // 打印翻转后的句子
	}

	// 打印句子的方法，用于输出结果
	private static void printSentence(String[] words) {
		for (String word : words) {
			System.out.print(word + " ");
		}
		System.out.println(); // 换行
	}

	// 打印原始句子的方法，用于无效区间的情况
	private static void printSentence(String sentence) {
		System.out.println(sentence);
	}
}
